package 作业.Stream流;

import java.util.*;

/**
 * 本题综合单列集合,双列集合,键盘输入,Stream流操作
 * 1.键盘录入3个学生信息,存储到学生对象(姓名,年龄).然后添加到ArrayList集
 * 合中.
 * 2.键盘录入3个居住地信息,添加到另一个集合ArrayList;
 * 3.把两个list集合中的数据收集到同一个map集合中,键是学生对对象,值是居
 * 住地址.
 * 4.要求map集合中不能存在相同的学生信息.并按照学生年龄降序排列
 * 5.使用Stream流输出集合中所有姓张的人信息;
 */
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生姓名,年龄");
        ArrayList<Student> stu = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入第" + (i + 1) + "个学生信息");
            Student student = new Student(sc.next(),sc.nextInt());
            stu.add(student);
        }
        ArrayList<String> live = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入居住地");
            String s = sc.next();
            live.add(s);
        }
        Map<Student, String> map0 = new HashMap<>();
        map0.put(stu.get(0),live.get(0));
        map0.put(stu.get(1),live.get(1));
        map0.put(stu.get(2),live.get(2));
        Set<Map.Entry<Student, String>> entries = map0.entrySet();
        entries.stream()
                .sorted((w1,w2)->w2.getKey().getAge()-w1.getKey().getAge())
                .filter(w->w.getKey().getName().startsWith("张"))
                .forEach(w-> System.out.println(w.getKey() + "------>" + w.getValue()));



//        for (Map.Entry<Student, String> entry : entries) {
//            Student key = entry.getKey();
//            String value = entry.getValue();
//            System.out.println(key + "------>" + value);
//        }

/*.sorted((s1,s2)->s2.getKey().getAge()-s1.getKey().getAge())
                .filter(s->s.getKey().getName().startsWith("张"))
                .forEach(s-> System.out.println(s.getKey() + "------>" + s.getValue()));*/

    }
}

